package com.tledu.spring.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.tledu.spring.core.entity.AjaxResult;
import com.tledu.spring.domain.MaterialInfo;
import com.tledu.spring.service.IMaterialInfoService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * @Author: rupert-tears
 * @Date: Created in 21:31 2021/7/2
 * @Description: 优秀的人都在孤独的翻山越岭！
 *
 * 物料信息控制层
 *
 */
@Controller
@AllArgsConstructor
@RequestMapping(value = ("/materInfo"))
public class MaterielInfoController {

    /**
     * 注入 逻辑实体
     */
    private final IMaterialInfoService materialInfoService;

    /**
     * 跳转 物料信息页面
     * @return 路径
     */
    @RequestMapping("list")
    public String list(){
        return "material/info/list";
    }

    /**
     * 分页查询 动态渲染
     * Ajax请求处理
     *      后端调用 进行逻辑操作
     *      返回结果给前端 （失败or成功）
     * @return 查询结果
     */
    @PostMapping("list")
    @ResponseBody
    public AjaxResult<PageInfo<MaterialInfo>> listAjaxResult(Integer page, Integer limit){
        PageHelper.startPage(page,limit);
        List<MaterialInfo> list = materialInfoService.list();
        PageInfo<MaterialInfo> pageInfo = new PageInfo<>(list);
        return new AjaxResult<>(pageInfo);
    }

    /**
     * 跳转 物料信息添加页面
     * @return 路径
     */
    @RequestMapping("insert")
    public String insertJump(){
        return "material/info/insert";
    }

    @PostMapping("insert")
    @ResponseBody
    public AjaxResult<Integer> insert(MaterialInfo materialInfo){
        // TODO: 富文本编辑器取值问题
        String remark = materialInfo.getRemark();
        if("".equals(remark)){
            System.out.println("remark是空字符串");
        }else {
            System.out.println("其他");
        }
        Integer i = materialInfoService.insert(materialInfo);
        assert i == 1;
        return new AjaxResult<>(i);
    }

    /**
     * 删除
     *      根据id 单个删除
     * @param id id
     * @return 删除结果
     */
    @DeleteMapping("delete/{id}")
    @ResponseBody
    public AjaxResult<Integer> delete(@PathVariable Integer id){
        Integer i = materialInfoService.delete(id);
        return new AjaxResult<>(i);
    }

    /**
     * 跳转 打开编辑页面
     * @param id id
     * @param model 编辑数据
     * @return 编辑结果
     */
    @GetMapping("/update")
    public String update(Integer id, Model model) {
        model.addAttribute("materialInfo", materialInfoService.selectById(id));
        return "material/info/update";
    }

    /**
     * 更新页面
     *
     * @return 更新结果
     */
    @PostMapping("/updateInfo")
    @ResponseBody
    public AjaxResult<String> updateInfo(MaterialInfo materialInfo) {
        Integer i = materialInfoService.update(materialInfo);
        assert i == 1;
        return new AjaxResult<>("修改成功");
    }


    /**
     * 根据 num 查询物料
     * @return 查询结果
     */
    @PostMapping("/query/{num}")
    @ResponseBody
    public AjaxResult<PageInfo<MaterialInfo>> queryAjaxResult(@PathVariable String num,Integer page, Integer limit){
        PageHelper.startPage(page,limit);
        List<MaterialInfo> list = materialInfoService.query(num);
        PageInfo<MaterialInfo> pageInfo = new PageInfo<>(list);
        return new AjaxResult<>(pageInfo);
    }
}
